<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
        Vue框架是采用虚拟Dom+diff算法，来提高指向效率的
        虚拟DOM：在内存当中的dom对象
        diff算法：这是一种能够快速的比较出两个事物不同之处的算法
     -->

    <div id="app">
        <h1>{{msg}}</h1>
        <table>
            <tr>
                <th>序号</th>
                <th>英雄</th>
                <th>能力值</th>
                <th>选择</th>
            </tr>
            <!-- 
               v-for指令所在的标签中，有一个非常重要的属性：
               :key
               如果没有指定的 :key 属性,会自动拿index作为key
               这个key是这个dom元素的身份证/唯一标识号

               分析以下：采用index作为key存在什么问题？
               第一个问题：效率低
               第二个问题：非常严重。产生了错乱，尤其是对数组当中的某些元素进行操作。（非末尾元素）
               怎么解决这个问题？
                 建议使用对象的id作为key
             -->
            <tr v-for="(hero,index) of heros" :key="hero.id">
                <td>{{index+1}}</td>
                <td>{{hero.name}}</td>
                <td>{{hero.power}}</td>
                <td><input type="checkbox"></td>
            </tr>
        </table>

        <button @click="add">点我加一</button>
    </div>
    <script src="js/vue.js"></script>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                msg: '虚拟dom与diff算法',
                heros: [
                    { id: '101', name: '1', power: 10000 },
                    { id: '102', name: '2', power: 10000 },
                    { id: '103', name: '3', power: 10000 },
                    { id: '104', name: '4', power: 10000 },
                ]
            },
            methods: {
                add() {
                    this.heros.unshift({ id: '104', name: '5', power: 10000 })
                }
            }
        })
    </script>
</body>

</html>